package Classes;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class ManipulaArquivo {
		
	private String arqUser;
	private String arqEst;
	private List<String[]> linhasUser, linhasEst;
	private ManipulaUsuario listaUsuario;
	private ManipulaEstabelecimento listaEstabelecimento;
	
	public ManipulaArquivo(String arqUser, String arqEst){
		this.arqUser = arqUser;
		this.arqEst = arqEst;
		listaUsuario = new ManipulaUsuario();
		listaEstabelecimento = new ManipulaEstabelecimento();
		linhasUser = lerArquivo(arqUser);
		criaUsuario(linhasUser,listaUsuario);
		linhasEst = lerArquivo(arqEst);		
		criaEstabelecimentos(linhasEst,listaEstabelecimento,listaUsuario);	
		
	}
		
	public static List<String[]> lerArquivo(String caminhoArquivo){
		BufferedReader in;
		List<String[]> listaLinhas = new ArrayList<String[]>();
		String[] linha;		
		try {
			in = new BufferedReader(new FileReader(caminhoArquivo));
			
			while(in.ready()){
				linha = in.readLine().split(";");
				listaLinhas.add(linha);
			}			
			in.close();			
		} catch (IOException e) {			
			System.out.println(e.getMessage());
		}return listaLinhas;
		
	}	
	
	public void criaEstabelecimentos(List<String[]> conjunto,ManipulaEstabelecimento listaEstabelecimentos, ManipulaUsuario listaUsuario){
		Estabelecimento local = null;
		
		for(String elementos : listaUsuario.getListaUsuario().get(0).getNotas()){			
			for(int i = 0;i < conjunto.size();i++){
				System.out.println(elementos);
				System.out.println(i);
				if(elementos.toLowerCase().equals(conjunto.get(i)[0].toLowerCase())){
					local = new Estabelecimento(elementos,conjunto.get(i)[1],conjunto.get(i)[2]);					
					break;
				}
			}
			if(!listaEstabelecimentos.verifica(local)){
			   listaEstabelecimentos.adiconaEstabelecimento(local);
		    }	
		}
		
	}
	
	public void criaUsuario(List<String[]> conjunto, ManipulaUsuario listaUsuario){
		Usuario user = null;		 
		for(String[] elementos : conjunto){
			user = new Usuario(elementos[1]);
			for(int i = 2; i < elementos.length;i++){				
				user.adicionaNotas(elementos[i]);				
			}			
			listaUsuario.adicionaUsuario(user);			
		}				
	}	
	
	public static void main(String[] args) {
		String caminhoUs = "/Users/Diego/workspace/pitaqueiro/opinioes-dos-usuarios-v2.data";
		String caminhoEs = "/Users/Diego/workspace/pitaqueiro/estabelecimentos.data";
		ManipulaArquivo x = new ManipulaArquivo(caminhoUs,caminhoEs);
		System.out.println(x.listaEstabelecimento.getEstabelecimento(0).getNome());
	}

}
